#include "labelimagemjogo.h"
#include "enums.h"
#include <QDebug>
#include <QErrorMessage>
#include <QIcon>
#include "exception.h"

LabelImagemJogo::LabelImagemJogo(QWidget *parent):
    QLabel(parent)
{
    this->setGeometry(70, 20, editacao::WIDTH_FASE, editacao::HEIGHT_FASE);
    this->grabKeyboard();
    this->setFocus();
}

LabelImagemJogo::~LabelImagemJogo()
{
    delete this->_controladorJogo;
}

void LabelImagemJogo::carregaImagem(QString &path)
{
    this->_controladorJogo = new ControladorJogo(path);
    this->setPixmap(this->_controladorJogo->pixmapImgJogo());
}

void LabelImagemJogo::keyPressEvent(QKeyEvent *ev)
{
    int key = ev->key();
    QPoint deslocamento;

    switch(key)
    {
        case(Qt::Key_W):
            deslocamento.setY(jogo::DESLOCAMENTO_Y_NEGATIVO);
            break;
        case(Qt::Key_S):
            deslocamento.setY(jogo::DESLOCAMENTO_Y_POSITIVO);
            break;
        case(Qt::Key_A):
            deslocamento.setX(jogo::DESLOCAMENTO_X_NEGATIVO);
            break;
        case(Qt::Key_D):
            deslocamento.setX(jogo::DESLOCAMENTO_X_POSITIVO);
            break;
        default:
            break;
    }
    try{
        this->_controladorJogo->movimentarHeroi(deslocamento);
        this->setPixmap(this->_controladorJogo->pixmapImgJogo());
    }catch(Exception e){
        QString msg = e.msg();
        this->mostraMsgErro(msg);
    }

}

void LabelImagemJogo::mostraMsgErro(const QString &msg)
{
    QErrorMessage errorMessage;
    errorMessage.setWindowIcon(QIcon(":img/img/icon.png"));
    errorMessage.setWindowTitle("Erro");
    errorMessage.showMessage(msg);
    errorMessage.exec();
}


